
import java.beans.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import javax.swing.JOptionPane;

/**
 *
 * @author Bárbara
 */
public class GerenciaMunicipios {
    
     private GerenciaBanco banco;
     
     public GerenciaMunicipios() {
		this.banco = new GerenciaBanco();
	}

     //retorna todos os municipios 
     public Iterator<Municipios> get() throws SQLException, BancoException {
		PreparedStatement pst = this.banco.getConexao().prepareStatement(
				"select nome from municipio order by nome");
		ResultSet rs = pst.executeQuery();
		Municipios m;
		ArrayList<Municipios> lista = new ArrayList<Municipios>();

		while (rs.next()) {
			m = new Municipios();
			m.setNome(rs.getString(1));
			lista.add(m);
		}
		return lista.iterator();
	}
     
     //cadastra municipios no banco
     public void cadastrarMunicipio(String nome) throws Exception {
		
		PreparedStatement pst = this.banco.getConexao().prepareStatement(
				"insert into municipio values(?)");
		
		pst.setString(1, nome);		
		boolean rs1 = pst.execute();
		if (!rs1){
			JOptionPane.showMessageDialog(null,"Municipio cadastrado");
		}

	}
     
     //remove municipio no banco
     public void deletarMunicipio(String nome) throws SQLException, BancoException {

        if (getNome(nome) == null) {
            System.out.println("Municipio não encontrado!");
        } else {
    
    
            PreparedStatement pstmt = this.banco.getConexao().prepareStatement(
                   "DELETE FROM municipio WHERE nome=?");

            pstmt.setString(1, nome);
            pstmt.execute();
            JOptionPane.showMessageDialog(null, "Municipio Removido com sucesso!");
        }
    }
     
     public boolean  getCodigo(String nome) throws SQLException,BancoException {
		PreparedStatement pst = this.banco
				.getConexao()
				.prepareStatement(
						"select cod_m from municipio where nome = ? order by cod_m");
		pst.setString(1, nome);
		ResultSet rs = pst.executeQuery();
		Municipios m = new Municipios();

		if (rs.next()) {
			m.setCodigo(rs.getInt(1));
			return true;
		}

		throw new BancoException("Municipio não localizado");
    }
     
     public Object getNome(String nome) throws SQLException,BancoException {
		PreparedStatement pst = this.banco
				.getConexao()
				.prepareStatement(
						"select nome from municipio where nome = ? order by nome");
		pst.setString(1, nome);
		ResultSet rs = pst.executeQuery();
		Municipios m = new Municipios();

		if (rs.next()) {
			m.setNome(rs.getString(1));
			return m;
		}

		throw new BancoException("Municipio não localizado");
    }
     
      public int pesquisaCod(String nome) throws SQLException,BancoException {
		PreparedStatement pst = this.banco
				.getConexao()
				.prepareStatement(
						"select cod_m from municipio where nome = ? order by cod_m");
		pst.setString(1, nome);
		ResultSet rs = pst.executeQuery();
		Municipios m = new Municipios();

		if (rs.next()) {
			m.setCodigo(rs.getInt(1));
			return m.getCodigo();
		}

		throw new BancoException("Municipio não localizado");
    }
      public void alterarMunicipio(String nome, int codigo) throws BancoException, SQLException{
        
        PreparedStatement pst = this.banco
				.getConexao()
				.prepareStatement("update municipio set nome=? where cod_m = ?");
     
        pst.setString(1, nome);
        pst.setInt(2, codigo);
        pst.execute();
        
        System.out.println("Dados alterados com sucesso!");
    } 
       
       
     
}

